#include <stdio.h>
 int m;
void print(int a[],int size){
    printf("%d=",m);
    for(int i=0;i<size;i++){
       if(i!=size-1){
        printf("%d+",a[i]);
       } 
        else {
             printf("%d",a[i]);
        }
    }
    printf("\n");
}

void fj(int n,int maxn,int a[],int index){
    if(n==0){
        print(a,index);
        return ;
    }
    for(int i=maxn;i>=1;i--){
        if(n-i>=0){
            a[index]=i;
            fj(n-i,i,a,index+1);
        }
    }
}
// 用数组存储当前的分解方案
int main() {
   
    scanf("%d", &m);
    
    // 检查输入范围
    
    // 存储分解方案的数组，最大长度为输入数字本身
    int partition[15];
    
    // 开始生成分解
    fj(m, m-1, partition, 0);
    
    return 0;
}